﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PSE.Framework.Communication.Configuration.Adapters;

namespace PSE.Framework.Communication.Adapters
{
    /// <summary>
    /// Interface para factories de adapters
    /// </summary>
    public interface IAdapterFactory
    {
        /// <summary>
        /// Captura o Type do adapter a partir da configuração
        /// </summary>
        /// <param name="config">Configuração do adapter</param>
        /// <returns>Type do adapter</returns>
        IEnumerable<Type> GetAdapterTypes(AdapterConfiguration config);

        ///// <summary>
        ///// Cria um adapter a partir da configuração
        ///// </summary>
        ///// <param name="config">Configuração do adapter</param>
        ///// <returns>Instância do adapter</returns>
        //IAdapter CreateAdapter(AdapterConfiguration config);

        ///// <summary>
        ///// Cria um adapter de entrada a partir da configuração
        ///// </summary>
        ///// <param name="config">Configuração do adapter</param>
        ///// <returns>Instância do adapter</returns>
        //IBaseInputAdapter CreateInputAdapter(InputAdapterConfiguration config);

        ///// <summary>
        ///// Cria um adapter de saída a partir da configuração
        ///// </summary>
        ///// <param name="config">Configuração do adapter</param>
        ///// <returns>Instância do adapter</returns>
        //IBaseOutputAdapter CreateOutputAdapter(OutputAdapterConfiguration config);
    }
}
